#ifndef LIST_H_
#define LIST_H_

#include <stdio.h>
#include <iostream>
using namespace std;

class Node {
public:
	int data;
	Node* next;
};

class List {
private:
	int count;
	Node* pHead;

public:
	List();
	void addFirst(int);
	void addLast(int);
	void display();
	Node* getHead();
	Node* getLast();
	void setHead(Node*);
	int empty();
	void removeFirst();
	void clear();
	static List* buildPosLinkedList();
	static List* buildLinkedList();
	void addFiboNumber(int);
	void addPos(int, int);
	int size();
	string getElemByPos(int);
	bool isExist(int);
	void reverse();
	void sort();
	static void mergeSortedList(List*, List*);
	void getIntersection(List*, List*);
	void getUnion(List*, List*);
	/*
	 * Method for polynomial evaluation
	 */
	void addConstant(int);
	void addPoly(List *);
	void printPoly();
	~List();
};

#endif /* LIST_H_ */

/*
 *
 *
 *
 */
